package com.gm.wj.controller;

import com.gm.wj.entity.SysNews;
import com.gm.wj.result.Result;
import com.gm.wj.result.ResultFactory;
import com.gm.wj.service.SysNewsService;
import com.gm.wj.util.SysLoging;
import com.gm.wj.util.VerifyUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 * @program: wj
 * @description: 最近更新
 * @author: Huang_shengjun
 * @create: 2020-09-16 22:36
 **/
@Log4j2
@RestController
@Api(tags = "最近更新管理相关接口")
public class SysNewsController {

    @Autowired
    SysNewsService sysNewsService;

    // 添加/修改
    @PostMapping("api/admin/news")
    @SysLoging("添加最近更新信息") //根据SysLoging的注解信息，进行方法的注释
    @ApiOperation("添加最近更新信息的接口")
    public Result saveNews(@RequestBody @Valid SysNews sysNews, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            // 判断不为空
            log.info(bindingResult.getAllErrors());
            return ResultFactory.buildFailResult(bindingResult.getAllErrors().get(0).getDefaultMessage());
        }
        try{
            if (sysNewsService.addOrUpdate(sysNews) == 1) {
                return ResultFactory.buildSuccessResult("添加成功",null);
            }
            return ResultFactory.buildFailResult("添加失败");
        } catch (Exception e){
            e.printStackTrace(); // 在控制台打印出异常种类，错误信息和出错位置等
            return ResultFactory.buildFailResult("服务器出错了，请联系管理员。错误信息：" + e.getMessage());
        }

    }

    // 列表
    @PostMapping("/api/admin/news/{size}/{page}")
    @ApiOperation("查询最近更新列表信息的接口")
    @SysLoging("查询最近更新列表信息") //根据SysLoging的注解信息，进行方法的注释
    public Result listNews(@PathVariable("size") int size, @PathVariable("page") int page, String queryKey1) {
        try {
            return ResultFactory.buildSuccessResult("查询成功",sysNewsService.list(page - 1, size, queryKey1));
        } catch (Exception e){
            e.printStackTrace(); // 在控制台打印出异常种类，错误信息和出错位置等
            return ResultFactory.buildFailResult("服务器出错了，请联系管理员。错误信息：" + e.getMessage());
        }
    }

    // 根据id查询
    @GetMapping("/api/admin/news/{id}")
    @ApiOperation("根据id查询最近更新信息的接口")
    @SysLoging("根据id查询最近更新信息") //根据SysLoging的注解信息，进行方法的注释
    public Result getOneNews(@PathVariable("id") int id) {
        try{
            return ResultFactory.buildSuccessResult("查询成功",sysNewsService.findById(id));
        }catch (Exception e){
            e.printStackTrace(); // 在控制台打印出异常种类，错误信息和出错位置等
            return ResultFactory.buildFailResult("服务器出错了，请联系管理员。错误信息：" + e.getMessage());
        }
    }

    // 删除
    @DeleteMapping("/api/admin/news/{id}")
    @ApiOperation("删除最近更新信息的接口")
    @SysLoging("删除最近更新信息")
    public Result deleteNews(@PathVariable("id") int id) {
        try{
            sysNewsService.delete(id);
            return ResultFactory.buildSuccessResult("删除成功",null);
        }catch (Exception e){
            e.printStackTrace(); // 在控制台打印出异常种类，错误信息和出错位置等
            return ResultFactory.buildFailResult("服务器出错了，请联系管理员。错误信息：" + e.getMessage());
        }
    }

    // 列表
    @PostMapping("/api/newsIndex/{size}/{page}")
    @ApiOperation("查询最近更新列表信息的接口")
    @SysLoging("查询最近更新列表信息") //根据SysLoging的注解信息，进行方法的注释
    public Result listNewsIndex(@PathVariable("size") int size, @PathVariable("page") int page) {
        try {
            return ResultFactory.buildSuccessResult("查询成功",sysNewsService.listIndex(page - 1, size));
        } catch (Exception e){
            e.printStackTrace(); // 在控制台打印出异常种类，错误信息和出错位置等
            return ResultFactory.buildFailResult("服务器出错了，请联系管理员。错误信息：" + e.getMessage());
        }
    }

}
